package com.credit.xzgl.service.impl;

import java.util.List;
import java.util.UUID;

import com.credit.common.exception.ServiceException;
import com.credit.common.utils.DateUtils;
import com.credit.common.utils.DictUtils;
import com.credit.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.credit.xzgl.mapper.CreditXzqzMapper;
import com.credit.xzgl.domain.CreditXzqz;
import com.credit.xzgl.service.ICreditXzqzService;

/**
 * 行政强制Service业务层处理
 * 
 * @author credit
 * @date 2025-03-23
 */
@Service
public class CreditXzqzServiceImpl implements ICreditXzqzService 
{
    @Autowired
    private CreditXzqzMapper creditXzqzMapper;

    /**
     * 查询行政强制
     * 
     * @param id 行政强制主键
     * @return 行政强制
     */
    @Override
    public CreditXzqz selectCreditXzqzById(String id)
    {
        return creditXzqzMapper.selectCreditXzqzById(id);
    }

    /**
     * 查询行政强制列表
     * 
     * @param creditXzqz 行政强制
     * @return 行政强制
     */
    @Override
    public List<CreditXzqz> selectCreditXzqzList(CreditXzqz creditXzqz)
    {
        return creditXzqzMapper.selectCreditXzqzList(creditXzqz);
    }

    /**
     * 新增行政强制
     * 
     * @param creditXzqz 行政强制
     * @return 结果
     */
    @Override
    public int insertCreditXzqz(CreditXzqz creditXzqz)
    {
        creditXzqz.setId(UUID.randomUUID().toString().replaceAll("-",""));
        creditXzqz.setCreateTime(DateUtils.getNowDate());
        return creditXzqzMapper.insertCreditXzqz(creditXzqz);
    }

    /**
     * 修改行政强制
     * 
     * @param creditXzqz 行政强制
     * @return 结果
     */
    @Override
    public int updateCreditXzqz(CreditXzqz creditXzqz)
    {
        creditXzqz.setUpdateTime(DateUtils.getNowDate());
        return creditXzqzMapper.updateCreditXzqz(creditXzqz);
    }

    /**
     * 批量删除行政强制
     * 
     * @param ids 需要删除的行政强制主键
     * @return 结果
     */
    @Override
    public int deleteCreditXzqzByIds(String[] ids)
    {
        return creditXzqzMapper.deleteCreditXzqzByIds(ids);
    }

    /**
     * 删除行政强制信息
     * 
     * @param id 行政强制主键
     * @return 结果
     */
    @Override
    public int deleteCreditXzqzById(String id)
    {
        return creditXzqzMapper.deleteCreditXzqzById(id);
    }
    @Override
    public String importData(List<CreditXzqz> list) {
        if (StringUtils.isNull(list) || list.size() == 0)
        {
            throw new ServiceException("导入数据不能为空！");
        }
        int failureNum = 0;
        StringBuilder failureMsg = new StringBuilder();
        int i =0;
        for (CreditXzqz creditXzqz : list){
            i++;
            creditXzqz.setId(UUID.randomUUID().toString().replaceAll("-",""));
            creditXzqz.setCreateTime(DateUtils.getNowDate());

            if(!StringUtils.isNotEmpty(creditXzqz.getXzqzly())){
                failureMsg.append("第"+i+"行数据 行政强制理由 不能为空;");
                failureNum++;
                continue;
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getXzqzyj())){
                failureMsg.append("第"+i+"行数据 行政强制依据 不能为空;");
                failureNum++;
                continue;
            }

            if(!StringUtils.isNotEmpty(creditXzqz.getXzqzzl())){
                failureMsg.append("第"+i+"行数据 行政强制种类 不能为空;");
                failureNum++;
                continue;
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getXzqznr())){
                failureMsg.append("第"+i+"行数据 行政强制内容 不能为空;");
                failureNum++;
                continue;
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getXzjgmc())){
                failureMsg.append("第"+i+"行数据 行政机关名称 不能为空;");
                failureNum++;
                continue;
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getXzjgdm())){
                failureMsg.append("第"+i+"行数据 行政机关代码 不能为空;");
                failureNum++;
                continue;
            }

            if(!StringUtils.isNotEmpty(creditXzqz.getSjlydwmc())){
                failureMsg.append("第"+i+"行数据 数据来源单位名称 不能为空;");
                failureNum++;
                continue;
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getSjlydwdm())){
                failureMsg.append("第"+i+"行数据 数据来源单位代码 不能为空;");
                failureNum++;
                continue;
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getGxsx())){
                failureMsg.append("第"+i+"行数据 共享属性 不能为空;");
                failureNum++;
                continue;
            }

            if(!StringUtils.isNotEmpty(creditXzqz.getXzxdrlb())){
                creditXzqz.setXzxdrlb(DictUtils.getDictValue("dict_credit_xzxdrlb",creditXzqz.getXzxdrlb()));
                if(StringUtils.isEmpty(creditXzqz.getXzxdrlb())){
                    failureMsg.append("第"+i+"行数据 行政相对人类别 值不在字典内;");
                    failureNum++;
                    continue;
                }
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getFddbrzjlx())){
                creditXzqz.setFddbrzjlx(DictUtils.getDictValue("dict_credit_fddbrzjlx",creditXzqz.getFddbrzjlx()));
                if(StringUtils.isEmpty(creditXzqz.getFddbrzjlx())){
                    failureMsg.append("第"+i+"行数据 法定代表人证件类型 值不在字典内;");
                    failureNum++;
                    continue;
                }
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getXzqzzl())){
                creditXzqz.setXzqzzl(DictUtils.getDictValue("dict_credit_jcxs",creditXzqz.getXzqzzl()));
                if(StringUtils.isEmpty(creditXzqz.getXzqzzl())){
                    failureMsg.append("第"+i+"行数据 行政强制种类 值不在字典内;");
                    failureNum++;
                    continue;
                }
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getXzqzcslx())){
                creditXzqz.setXzqzcslx(DictUtils.getDictValue("dict_credit_jcfs",creditXzqz.getXzqzcslx()));
                if(StringUtils.isEmpty(creditXzqz.getXzqzcslx())){
                    failureMsg.append("第"+i+"行数据 行政强制措施类型 值不在字典内;");
                    failureNum++;
                    continue;
                }
            }
            if(!StringUtils.isNotEmpty(creditXzqz.getGxsx())){
                creditXzqz.setGxsx(DictUtils.getDictValue("dict_credit_gxsx",creditXzqz.getGxsx()));
                if(StringUtils.isEmpty(creditXzqz.getGxsx())){
                    failureMsg.append("第"+i+"行数据 共享属性 值不在字典内;");
                    failureNum++;
                }
            }
        }

        if(failureNum>0){
            return failureMsg.toString();
        }
        int a = creditXzqzMapper.batchSave(list);
        return "导成功"+a+"条";
    }
}
